package com.leetcode;

/**
 * 744. 寻找比目标字母大的最小字母
 *
 * @author fy
 * @date 2022/4/27 16:55
 */
public class Solution744_3 {

    public char nextGreatestLetter(char[] letters, char target) {
        int n = letters.length;
        // 如果大于数组最大的元素, 则取第一个
        if (letters[n - 1] <= target) {
            return letters[0];
        }
        int l = 0;
        int r = n - 1;
        // 这里没有等于跟744不太一样
        while (l < r) {
            // 位移运算符两边一定要用括号扩起来
            int mid = l + ((r - l) >> 1);
            if (letters[mid] > target) {
                r = mid;
            } else {
                l = mid + 1;
            }
        }
        return letters[l];
    }

}
